home *** CD-ROM | disk | FTP | other *** search
/ Shareware Grab Bag / Shareware Grab Bag.iso / 010 / games.arc / ORIGSTAR.BAS (.txt) < prev    next >
Encoding:
GW-BASIC  |  1984-12-18  |  11.9 KB  |  227 lines

  1. 10  DIMG(8,8),C(9,2),K(3,3),N(3),Z(8,8),D(8),G2$(8),G4$(16)
  2. 20  RANDOMIZEVAL(RIGHT$(TIME$,2)):KEYOFF:CLS:Z$=STRING$(25," "):G2$(1)="WARP ENGINES":G2$(2)="SHORT RANGE SENSORS":G2$(3)="LONG RANGE SENSORS":G2$(4)="PHASER CONTROL":G2$(5)="PHOTON TUBES":G2$(6)="DAMAGE CONTROL":G2$(7)="SHIELD CONTROL
  3. 30  G2$(8)="LIBRARY-COMPUTER":G4$(1)="ANTARES":G4$(2)="RIGEL":G4$(3)="PROCYON":G4$(4)="VEGA":G4$(5)="CANOPUS":G4$(6)="ALTAIR":G4$(7)="SAGITTARIUS":G4$(8)="POLLUX":G4$(9)="SIRIUS":G4$(10)="DENEB":G4$(11)="CAPELLA":G4$(12)="BETELGEUSE
  4. 40  G4$(13)="ALDEBARAN":G4$(14)="REGULUS":G4$(15)="ARCTURUS":G4$(16)="SPICA":T=INT(RND(1)*20+20)*100:T0=T:T9=25+INT(RND(1)*10):D0=0:E=3000:E0=E:P=10:P0=P:S9=200:S=0:B9=0:K9=0:X$="":X0$=" IS ":DEFFND(D)=SQR((K(I,1)-S1)^2+(K(I,2)-S2)^2)
  5. 50  DEFFNR(R)=INT(RND(1)*7.98+1.01):Q1=FNR(1):Q2=FNR(1):S1=FNR(1):S2=FNR(1):FORI=1TO9:C(I,1)=0:C(I,2)=0:NEXTI:C(2,1)=-1:C(3,1)=-1:C(4,1)=-1:C(4,2)=-1:C(5,2)=-1:C(6,2)=-1:C(1,2)=1:C(2,2)=1:C(6,1)=1:C(7,1)=1:C(8,1)=1:C(8,2)=1:C(9,2)=1:FORI=1TO8
  6. 60  D(I)=0:NEXTI:A1$="NAVSRSLRSPHATORSHEDAMCOMXXXHEL":FORI=1TO8:FORJ=1TO8:K3=0:Z(I,J)=0:R1=RND(1):IFR1>0.98THENK3=3:K9=K9+3:GOTO80
  7. 70  R2=-(R1>0.95):K3=2*R2:K9=K9+R2 ELSER2=-(R1>0.8):K3=R2:K9=K9+R2
  8. 80  B3=0:R2=-(RND(1)>0.96):B3=R2:B9=B9+B3:G(I,J)=K3*100+B3*10+FNR(1):NEXTJ:NEXTI:IFK9>T9THENT9=K9+1
  9. 90  IFB9<>0THEN120
  10. 100  R2=-(G(Q1,Q2)<200):G(Q1,Q2)=G(Q1,Q2)+100*R2:K9=K9+R2
  11. 110  B9=1:G(Q1,Q2)=G(Q1,Q2)+10:Q1=FNR(1):Q2=FNR(1)
  12. 120  K7=K9:IFB9<>1THENX$="S":X0$=" ARE 
  13. 130  PRINT"YOUR ORDERS ARE AS FOLLOWS:":PRINT"DESTROY THE";K9;"KLINGON WARSHIPS WHICH HAVE INVADED":PRINT"THE GALAXY BEFORE THEY CAN ATTACK FEDERATION HEADQUARTERS":PRINT"ON STARDATE";T0+T9;". THIS GIVES YOU";T9;"DAYS. THERE ";X0$
  14. 140  PRINTB9;"STARBASE";X$;" IN THE GALAXY FOR RESUPPLYING YOUR SHIP.":PRINT:PRINT"HIT ANY KEY TO BEGIN YOUR COMMAND
  15. 150  I=RND(1):IFINKEY$=""THEN150
  16. 160  Z4=Q1:Z5=Q2:K3=0:B3=0:S3=0:G5=0:D4=0.5*RND(1):Z(Q1,Q2)=G(Q1,Q2):IFQ1<1ORQ1>8ORQ2<1ORQ2>8THEN240
  17. 170  GOSUB2180:PRINT:IFT0<>TTHEN190
  18. 180  PRINT"YOUR MISSION BEGINS WITH YOUR STARSHIP LOCATED":PRINT"IN THE GALACTIC QUADRANT `";G3$;"'.":GOTO200
  19. 190  PRINT"NOW ENTERING ";G3$;" QUADRANT . . .
  20. 200  PRINT:K3=INT(G(Q1,Q2)*0.01):B3=INT(G(Q1,Q2)*0.1)-10*K3:S3=G(Q1,Q2)-100*K3-10*B3:IFK3=0THEN230
  21. 210  PRINT"COMBAT AREA      CONDITION RED":IFS>200THEN230
  22. 220  PRINT"   SHIELDS DANGEROUSLY LOW
  23. 230  FORI=1TO3:K(I,1)=0:K(I,2)=0:NEXTI
  24. 240  FORI=1TO3:K(I,3)=0:NEXTI:Q$=Z$+Z$+Z$+Z$+Z$+Z$+Z$+LEFT$(Z$,17):A$="<*>":Z1=S1:Z2=S2:GOSUB2130:IFK3<1THEN260
  25. 250  FORI=1TOK3:GOSUB2110:A$="+++":Z1=R1:Z2=R2:GOSUB2130:K(I,1)=R1:K(I,2)=R2:K(I,3)=S9*(0.5*RND(1)):NEXTI
  26. 260  IFB3<1THEN280
  27. 270  GOSUB2110:A$=">|<":Z1=R1:B4=R1:Z2=R2:B5=R2:GOSUB2130
  28. 280  FORI=1TOS3:GOSUB2110:A$=" * ":Z1=R1:Z2=R2:GOSUB2130:NEXTI
  29. 290  GOSUB1520
  30. 300  IFS+E>10THENIFE>10ORD(7)=0THEN330
  31. 310  PRINT"SHIP STRANDED IN SPACE. YOU HAVE INSUFFICIENT ENERGY TO":PRINT"MANEUVER. SHIELDS CANNOT BE CROSS-CIRCUITED":GOTO1460
  32. 320  PRINT"TYPE `HEL' FOR HELP
  33. 330  INPUT"COMMAND";A$:FORI=1TO10:IFLEFT$(A$,3)<>MID$(A1$,3*I-2,3)THEN350
  34. 340  ONIGOTO380,290,820,870,1020,1230,1280,1700,1480,360
  35. 350  NEXTI:GOTO320
  36. 360  PRINT"TYPE ONE OF THE FOLLOWING:":PRINT"NAV - TO SET COURSE":PRINT"SRS - FOR SHORT RANGE SENSOR SCAN":PRINT"LRS - FOR LONG RANGE SENSOR SCAN":PRINT"PHA - TO FIRE LASERS":PRINT"TOR - TO FIRE PHOTON TORPEDOES":PRINT"SHE - TO RAISE OR LOWER SHEILDS
  37. 370  PRINT"DAM - FOR DAMAGE CONTROL REPORTS":PRINT"COM - TO CALL ON LIBRARY COMPUTER":PRINT"XXX - TO RESIGN YOUR COMMAND":PRINT:GOTO300
  38. 380  INPUT"COURSE (0-9)";C1:IFC1=9THENC1=1
  39. 390  IFC1>=1ANDC1<9THEN410
  40. 400  PRINT"INCORRECT COURSE DATA":GOTO300
  41. 410  X$="8":IFD(1)<0THENX$="0.2
  42. 420  PRINT"WARP FACTOR (0-";X$;")";:INPUTW1:IFD(1)<0ANDW1>0.2THEN460
  43. 430  IFW1>0ANDW1<=8THEN470
  44. 440  IFW1=0THEN300
  45. 450  PRINT"THE ENGINES WONT TAKE WARP ";W1;"!":GOTO300
  46. 460  PRINT"WARP ENGINES DAMAGED. MAX. WARP SPEED IS 0.2":GOTO300
  47. 470  N=INT(W1*8+0.5):IFE-N>0THEN500
  48. 480  PRINT"INSUFFICIENT ENERGY FOR MOVING AT WARP ";W1:IFS<N-EORD(7)<0THEN300
  49. 490  PRINTS;"UNITS OF ENERGY DEPLOYED TO SHIELDS":GOTO300
  50. 500  FORI=1TOK3:IFK(I,3)=0THEN520
  51. 510  A$="   ":Z1=K(I,1):Z2=K(I,2):GOSUB2130:GOSUB2110:K(I,1)=Z1:K(I,2)=Z2:A$="+++":GOSUB2130
  52. 520  NEXTI:GOSUB1380:D1=0:D6=W1:IFW1>=1THEND6=1
  53. 530  FORI=1TO8:IFD(I)>=0THEN580
  54. 540  D(I)=D(I)+D6:IFD(I)>-0.1ANDD(I)<0THEND(I)=-0.1:GOTO580
  55. 550  IFD(I)<0THEN580
  56. 560  IFD1<>1THEND1=1:PRINT"DAMAGE CONTROL REPORT: ";
  57. 570  R1=I:PRINTG2$(R1);" REPAIR COMPLETED.
  58. 580  NEXTI:IFRND(1)>0.2THEN620
  59. 590  R1=FNR(1):IFRND(1)>0.6THEN610
  60. 600  D(R1)=D(R1)-(RND(1)*5+1):PRINT"DAMAGE CONTROL REPORT: ";:PRINTG2$(R1);" DAMAGED.":PRINT:GOTO620
  61. 610  D(R1)=D(R1)+RND(1)*3+1:PRINT"DAMAGE CONTROL REPORT: ";:PRINTG2$(R1);" STATE OF REPAIR IMPROVED.":PRINT
  62. 620  A$="   ":Z1=INT(S1):Z2=INT(S2):GOSUB 2130:X1=C(INT(C1),1)+(C(INT(C1)+1,1)-C(INT(C1),1))*(C1-INT(C1)):X=S1:Y=S2:X2=C(INT(C1),2)+(C(INT(C1)+1,2)-C(INT(C1),2))*(C1-INT(C1)):Q4=Q1:Q5=Q2:FOR I=1 TO N:S1=S1+X1:S2=S2+X2
  63. 621  IF S1<1 OR S1>=9 OR S2<1 OR S2>=9 THEN 690
  64. 630  S8=INT(S1)*24+INT(S2)*3-26:IFMID$(Q$,S8,2)="  "THEN650
  65. 640  S1=INT(S1-X1):S2=INT(S2-X2):PRINT"WARP ENGINES SHUT DOWN AT ";:PRINT"SECTOR";S1;",";S2;"DUE TO BAD NAVIGATION.":GOTO660
  66. 650  NEXTI:S1=INT(S1):S2=INT(S2)
  67. 660  A$="<*>":Z1=INT(S1):Z2=INT(S2):GOSUB2130:GOSUB790:T8=1:IFW1<1THENT8=0.1*INT(W1*10)
  68. 670  T=T+T8:IFT>T0+T9THEN1460
  69. 680  GOTO290
  70. 690  X=8*Q1+X+N*X1:Y=8*Q2+Y+N*X2:Q1=INT(X/8):Q2=INT(Y/8):S1=INT(X-Q1*8):S2=INT(Y-Q2*8):IFS1=0THENQ1=Q1-1:S1=8
  71. 700  IFS2=0THENQ2=Q2-1:S2=8
  72. 710  X5=0:IFQ1<1THENX5=1:Q1=1:S1=1
  73. 720  IFQ1>8THENX5=1:Q1=8:S1=8
  74. 730  IFQ2<1THENX5=1:Q2=1:S2=1
  75. 740  IFQ2>8THENX5=1:Q2=8:S2=8
  76. 750  IFX5=0THEN770
  77. 760  PRINT"GALAXY BORDER REACHED.":PRINT"ENGINE SHUTDOWN AT SECTOR";S1;",";S2;"OF QUADRANT";Q1;",";Q2;".":IFT>T0+T9THEN1460
  78. 770  IF8*Q1+Q2=8*Q4+Q5THEN660
  79. 780  T=T+1:GOSUB790:GOTO160
  80. 790  E=E-N-10:IFE>=0THENRETURN
  81. 800  PRINT"SHIELD CONTROL SUPPLIES ENERGY TO COMPLETE THE MANEUVER.":S=S+E:E=0:IFS<=0THENS=0
  82. 810  RETURN
  83. 820  IFD(3)<0THENPRINT"LONG RANGE SENSORS ARE INOPERABLE.":GOTO300
  84. 830  PRINT"LONG RANGE SENSOR SCAN FOR QUADRANT";Q1;",";Q2:O1$="----------------------":PRINTO1$:FORI=Q1-1TOQ1+1:N(1)=-1:N(2)=-1:N(3)=-1:FORJ=Q2-1TOQ2+1:IFI>0ANDI<9ANDJ>0ANDJ<9THENN(J-Q2+2)=G(I,J):Z(I,J)=G(I,J)
  85. 840  NEXTJ:FORL=1TO3:PRINT":  ";:IFN(L)<0THENPRINT"*** ";:GOTO860
  86. 850  PRINTRIGHT$(STR$(N(L)+1000),3);" ";
  87. 860  NEXTL:PRINT":":PRINTO1$:NEXTI:GOTO300
  88. 870  IFD(4)<0THENPRINT"PHASERS INOPERATIVE":GOTO300
  89. 880  IFK3>0THEN900
  90. 890  PRINT"NO ENEMY SHIPS IN THIS QUADRANT":GOTO300
  91. 900  IFD(8)<0THENPRINT"COMPUTER FAILURE HAMPERS ACCURACY
  92. 910  PRINT"PHASERS LOCKED ON TARGET:";
  93. 920  PRINTE;"UNITS OF ENERGY AVAILABLE":INPUT"NUMBER OF UNITS TO FIRE";X:IFX<=0THEN300
  94. 930  IFE-X<=0THEN920
  95. 940  E=E-X:IFD(7)<0THENX=X*RND(1)
  96. 950  H1=INT(X/K3):FORI=1TO3:IFK(I,3)<=0THEN1010
  97. 960  H=INT((H1/FND(1))*(RND(1)+2)):IFH>0.15*K(I,3)THEN980
  98. 970  PRINT"SENSORS SHOW NO DAMAGE TO ENEMY AT";K(I,1);",";K(I,2):GOTO1010
  99. 980  K(I,3)=K(I,3)-H:PRINTH;"UNITS HIT ON KLINGON AT SECTOR";K(I,1);",";:PRINTK(I,2):IFK(I,3)<=0THENPRINT"*** KLINGON DESTROYED ***":GOTO1000
  100. 990  PRINT"SENSORS SHOW";K(I,3);"UNITS REMAINING":GOTO1010
  101. 1000  K3=K3-1:K9=K9-1:Z1=K(I,1):Z2=K(I,2):A$="   ":GOSUB2130:K(I,3)=0:G(Q1,Q2)=G(Q1,Q2)-100:Z(Q1,Q2)=G(Q1,Q2):IFK9<=0THEN1510
  102. 1010  NEXTI:GOSUB1380:GOTO300
  103. 1020  IFP<=0THENPRINT"PHOTON TORPEDOES EXPENDED":GOTO300
  104. 1030  IFD(5)<0THENPRINT"PHOTON TUBES NOT OPERATIONAL":GOTO300
  105. 1040  INPUT"PHOTON TORPEDOE COURSE";C1:IFC1=9THENC1=1
  106. 1050  IFC1>=1ANDC1<9THEN1070
  107. 1060  PRINT"INCORRECT COURSE DATA":GOTO300
  108. 1070  X1=C(INT(C1),1)+(C(INT(C1)+1,1)-C(INT(C1),1))*(C1-INT(C1)):E=E-2:P=P-1:X2=C(INT(C1),2)+(C(INT(C1)+1,2)-C(INT(C1),2))*(C1-INT(C1)):X=S1:Y=S2:PRINT"TORPEDOE TRACK:
  109. 1080  X=X+X1:Y=Y+X2:X3=INT(X+0.5):Y3=INT(Y+0.5):IFX3<1ORX3>8ORY3<1ORY3>8THEN1220
  110. 1090  PRINT"                ";X3;",";Y3:A$="   ":Z1=X:Z2=Y:GOSUB2160:IFZ3<>0THEN1080
  111. 1100  A$="+++":Z1=X:Z2=Y:GOSUB2160:IFZ3=0THEN1150
  112. 1110  PRINT"*** KLINGON DESTROYED ***":K3=K3-1:K9=K9-1:IFK9<=0THEN1510
  113. 1120  FORI=1TO3:IFX3=K(I,1)ANDY3=K(I,2)THEN1140
  114. 1130  NEXTI:I=3
  115. 1140  K(I,3)=0:GOTO1210
  116. 1150  A$=" * ":Z1=X:Z2=Y:GOSUB2160:IFZ3=0THEN1170
  117. 1160  PRINT"STAR AT";X3;",";Y3;"ABSORBED TORPEDOE ENERGY":GOSUB1380:GOTO300
  118. 1170  A$=">|<":Z1=X:Z2=Y:GOSUB2160:IFZ3=0THEN1010
  119. 1180  PRINT"*** STARBASE DESTROYED ***":B3=B3-1:B9=B9-1:IFB9=0ORK9>T-T0-T9THEN1200
  120. 1190  PRINT"YOU ARE HEREBY SENTENCED TO 99 STARDATES HARD LABOR ON CYGNUS 12":GOTO1480
  121. 1200  PRINT"STARFLEET COMMEND REVIEWING YOUR RECORD TO CONSIDER COURT MARTIAL":D0=0
  122. 1210  Z1=X:Z2=Y:A$="   ":GOSUB2130:G(Q1,Q2)=K3*100+B3*10+S3:Z(Q1,Q2)=G(Q1,Q2):GOSUB1380:GOTO300
  123. 1220  PRINT"TORPEDOE MISSED":GOSUB1380:GOTO300
  124. 1230  IFD(7)<0THENPRINT"SHIELD CONTROL INOPERABLE":GOTO300
  125. 1240  PRINTE+S;"UNITS OF ENERGY AVAILABLE":INPUT"NUMBER OF UNITS TO SHIELDS";X:IFX<0ORX=STHENPRINT"SHIELDS UNCHANGED":GOTO300
  126. 1250  IFX<=E+STHEN1270
  127. 1260  PRINT"NOT ENOUGH UNITS OF ENERGY AVAILABLE":GOTO300
  128. 1270  E=E+S-X:S=X:PRINT"SHIELDS NOW AT";INT(S);"UNITS":GOTO300
  129. 1280  IFD(6)>=0THEN1360
  130. 1290  PRINT"DAMAGE CONTROL REPORT NOT AVAILABLE":IFD0=0THEN300
  131. 1300  D3=0:FORI=1TO8:IFD(I)<0THEND3=D3+0.1
  132. 1310  NEXTI:IFD3=0THEN300
  133. 1320  PRINT:D3=D3+D4:IFD3>=1THEND3=0.9
  134. 1330  PRINT"STANDBY TO EFFECT REPAIRS ON YOUR SHIP":PRINT"ESTIMATED TIME TO REPAIR:";0.01*INT(100*D3);"STARDATES":INPUT"WILL YOU AUTHORIZE THE REPAIR (Y/N)";A$:IFA$<>"Y"THEN300
  135. 1340  FORI=1TO8:IFD(I)<0THEND(I)=0
  136. 1350  NEXTI:T=T+D3+0.1
  137. 1360  PRINT:PRINT"DEVICE             STATE OF REPAIR":FORR1=1TO8:PRINTG2$(R1);LEFT$(Z$,25-LEN(G2$(R1)));INT(D(R1)*100)*0.01:NEXTR1:PRINT:IFD0<>0THEN1300
  138. 1370  GOTO300
  139. 1380  IFK3<=0THENRETURN
  140. 1390  IFD0<>0THENPRINT"STARBASE SHIELDS PROTECT THE ENTERPRISE":RETURN
  141. 1400  FORI=1TO3:IFK(I,3)<=0THEN1450
  142. 1410  H=INT((K(I,3)/FND(1))*(2+RND(1))):S=S-H:K(I,3)=K(I,3)/(3+RND(0)):PRINTH;"UNITS HIT ON ENTERPRISE FROM SECTOR";K(I,1);",";K(I,2):IFS<=0THEN1470
  143. 1420  PRINT"SHIELDS DOWN TO";S;"UNITS":IFH<20THEN1450
  144. 1430  IFRND(1)>0.6ORH/S<=0.02THEN1450
  145. 1440  R1=FNR(1):D(R1)=D(R1)-H/S-0.5*RND(1):PRINT"DAMAGE CONTROL REPORTS `";G2$(R1);"' DAMAGED BY THE HIT
  146. 1450  NEXTI:RETURN
  147. 1460  PRINT"IT STARDATE";T:GOTO1480
  148. 1470  PRINT:PRINT"THE ENTERPRISE HAS BEEN DESTROYED.":PRINT"THE FEDERATION WILL BE CONQUERED":GOTO1460
  149. 1480  PRINT"THERE WERE";K9;"KLINGON BATTLE CRUISERS":PRINT"LEFT AT THE END OF YOUR MISSION.
  150. 1490  INPUT"AGAIN (Y/N)";A$:IFA$="Y"THEN20
  151. 1500  END
  152. 1510  PRINT"CONGRATULATIONS. THE LAST KLINGON BATTLE CRIUSER HAS BEEN DESTROYED":PRINT"YOUR EFFICIENCY RATING IS";1000*(K7/(T-T0))^2:GOTO1490
  153. 1520  FORI=S1-1TOS1+1:FORJ=S2-1TOS2+1:IFINT(I+0.5)<1ORINT(I+0.5)>8ORINT(J+0.5)<1ORINT(J+0.5)>8THEN1540
  154. 1530  A$=">|<":Z1=I:Z2=J:GOSUB2160:IFZ3=1THEN1550
  155. 1540  NEXTJ:NEXTI:D0=0:GOTO1560
  156. 1550  D0=1:C$="DOCKED":E=E0:P=P0:PRINT"SHIELDS DROPPED FOR DOCKING PURPOSES":S=0:GOTO1580
  157. 1560  IFK3>0THENC$="RED":GOTO1580
  158. 1570  C$="GREEN":IFE<E0*0.1THENC$="YELLOW
  159. 1580  IFD(2)>=0THEN1600
  160. 1590  PRINT:PRINT"SHORT RANGE SENSORS ARE OUT":PRINT:RETURN
  161. 1600  O1$="---------------------------------":PRINTO1$:FORI=1TO8:FORJ=(I-1)*24+1TO(I-1)*24+22STEP3:PRINT" ";MID$(Q$,J,3);:NEXTJ:ONIGOTO1610,1620,1630,1640,1650,1660,1670,1680
  162. 1610  PRINT"        STARDATE          ";INT(T*10)*0.1:GOTO1690
  163. 1620  PRINT"        CONDITION         ";C$:GOTO1690
  164. 1630  PRINT"        QUADRANT          ";Q1;",";Q2:GOTO1690
  165. 1640  PRINT"        SECTOR            ";S1;",";S2:GOTO1690
  166. 1650  PRINT"        PHOTON TORPEDOES  ";INT(P):GOTO1690
  167. 1660  PRINT"        TOTAL ENERGY      ";INT(E+S):GOTO1690
  168. 1670  PRINT"        SHIELDS           ";INT(S):GOTO1690
  169. 1680  PRINT"        KLINGONS REMAINING";INT(K9)
  170. 1690  NEXTI:PRINTO1$:RETURN
  171. 1700  IFD(8)<0THENPRINT"COMPUTER DISABLED":GOTO300
  172. 1710  INPUT"COMPUTER ACTIVE AND AWAITING COMMAND";A:IFA<0THEN300
  173. 1720  PRINT:H8=1:ONA+1GOTO1760,1830,1870,2090,1920,1750
  174. 1730  PRINT"FUNCTIONS AVAILABLE FROM LIBRARY-COMPUTER:":PRINT"0 = CUMULATIVE GALACTIC RECORD":PRINT"1 = STATUS REPORT":PRINT"2 = PHOTON TORPEDOE DATA":PRINT"3 = STARBASE NAV DATA":PRINT"4 = DIRECTION/DISTANCE CALCULATOR
  175. 1740  PRINT"5 = GALAXY `REGION NAME' MAP":PRINT:GOTO1710
  176. 1750  H8=0:G5=1:PRINT"                        GALAXY MAP":GOTO1770
  177. 1760  PRINT"COMPUTER RECORD OF GALAXY FOR QUADRANT";Q1;",";Q2
  178. 1770  PRINT"       1     2     3     4     5     6     7     8":O1$="     ----- ----- ----- ----- ----- ----- ----- -----":PRINTO1$:FORI=1TO8:PRINTI;:IFH8=0THEN1810
  179. 1780  FORJ=1TO8:PRINT"   ";:IFZ(I,J)=0THENPRINT"***";:GOTO1800
  180. 1790  PRINTRIGHT$(STR$(Z(I,J)+1000),3);
  181. 1800  NEXTJ:GOTO1820
  182. 1810  Z4=I:Z5=1:GOSUB2180:J0=INT(15-0.5*LEN(G3$)):PRINTTAB(J0);G3$;:Z5=5:GOSUB2180:J0=INT(39-0.5*LEN(G3$)):PRINTTAB(J0);G3$;
  183. 1820  PRINT:PRINTO1$:NEXTI:GOTO300
  184. 1830  PRINT"   STATUS REPORT:":X$="":IFK9>1THENX$="S
  185. 1840  PRINT"KLINGON";X$;" LEFT:";K9:PRINT"MISSION MUST BE COMPLETED IN";0.1*INT((T0+T9-T)*10);"STARDATES":X$="S":IFB9<2THENX$="":IFB9<1THEN1860
  186. 1850  PRINT"THE FEDERATION IS MAINTAINING";B9;"STARBASE";X$;" IN THE GALAXY":GOTO1280
  187. 1860  PRINT"THERE ARE NO STARBASES LEFT":GOTO1280
  188. 1870  IFK3<=0THEN890
  189. 1880  X$="":IFK3>1THENX$="S
  190. 1890  PRINT"FROM ENTERPRISE TO KLINGON BATTLE CRUISER";X$:H8=0:FORI=1TO3:IFK(I,3)<=0THEN2080
  191. 1900  W1=K(I,1):X=K(I,2)
  192. 1910  C1=S1:A=S2:GOTO1930
  193. 1920  PRINT"DIRECTION/DISTANCE CALCULATOR:":PRINT"YOU ARE AT QUADRANT";Q1;",";Q2;"SECTOR";S1;",";S2:INPUT"PLEASE ENTER INITIAL COORDINATES (X,Y)";C1,A:INPUT"FINAL COORDINATES (X,Y)";W1,X
  194. 1930  X=X-A:A=C1-W1:IF X<0 THEN 2010
  195. 1940  IFA<0THEN2030
  196. 1950  IFX>0THEN1970
  197. 1960  IFA=0THENC1=5:GOTO1980
  198. 1970  C1=1
  199. 1980  IFABS(A)<ABS(X)THEN2000
  200. 1990  PRINT"DIRECTION =";C1+(((ABS(A)-ABS(X))+ABS(A))/ABS(A)):GOTO2070
  201. 2000  PRINT"DIRECTION =";C1+(ABS(A)/ABS(X)):GOTO2070
  202. 2010  IFA>0THENC1=3:GOTO2040
  203. 2020  IFX<>0THENC1=5:GOTO1980
  204. 2030  C1=7
  205. 2040  IFABS(A)>=ABS(X)THEN2060
  206. 2050  PRINT"DIRECTION =";C1+(((ABS(X)-ABS(A))+ABS(X))/ABS(X)):GOTO2070
  207. 2060  PRINT"DIRECTION =";C1+(ABS(X)/ABS(A))
  208. 2070  PRINT"DISTANCE =";SQR(X^2+A^2)*0.128:IF H8=1 THEN 300
  209. 2080  NEXTI:GOTO300
  210. 2090  IFB3<>0THENPRINT"FROM ENTERPRISE TO STARBASE:":W1=B4:X=B5:GOTO1910
  211. 2100  PRINT"SENSORS SHOW NO STARBASE IN THIS QUADRANT":GOTO300
  212. 2110  R1=FNR(1):R2=FNR(1):A$="   ":Z1=R1:Z2=R2:GOSUB2160:IFZ3=0THEN2110
  213. 2120  RETURN
  214. 2130  S8=INT(Z2-0.5)*3+INT(Z1-0.5)*24+1:IFS8=1THENQ$=A$+RIGHT$(Q$,189):RETURN
  215. 2140  IFS8=190THENQ$=LEFT$(Q$,189)+A$:RETURN
  216. 2150  Q$=LEFT$(Q$,S8-1)+A$+RIGHT$(Q$,190-S8):RETURN
  217. 2160  Z1=INT(Z1+0.5):Z2=INT(Z2+0.5):S8=(Z2-1)*3+(Z1-1)*24+1:Z3=0:IFMID$(Q$,S8,3)<>A$THENRETURN
  218. 2170  Z3=1:RETURN
  219. 2180  IFZ5<=4THENG3$=G4$(Z4):GOTO2200
  220. 2190  G3$=G4$(Z4+8)
  221. 2200  IFG5<>1THENONZ5GOTO2220,2230,2240,2250,2220,2230,2240,2250
  222. 2210  RETURN
  223. 2220  G3$=G3$+" I":RETURN
  224. 2230  G3$=G3$+" II":RETURN
  225. 2240  G3$=G3$+" III":RETURN
  226. 2250  G3$=G3$+" IV":RETURN
  227.